/**
 * Tools 工具类方法
 * 包括货币，设备user agent，
 */
let Tools = {
  /**
   * 合并对象，返回新的对象
   * 用空对象作为第一个参数传递给 Object.assign，以确保是复制数据，而不是去改变原来的数据
   */
  updateObject: function(oldObject, newValues) {
    return Object.assign({}, oldObject, newValues);
  },
  // 合并对象
  updateItemInArray: function(array, itemId, updateItemCallback) {
    const updatedItems = array.map(item => {
      if (item.product_id !== itemId) {
        // 因为我们只想更新一个项目，所以保留所有的其他项目
        return item;
      }

      // 使用提供的回调来创建新的项目
      const updatedItem = updateItemCallback(item);
      return updatedItem;
    });

    return updatedItems;
  },
  /**
   * 浏览器判断方法相关
   */
  // 是否微信浏览器
  isWeChatBrowser: function() {
    var e = navigator.userAgent.toLowerCase();
    return "micromessenger" == e.match(/MicroMessenger/i) ? !0 : !1
  },
  //
  isFruitdayAppBrowser: function() {
    var e = navigator.userAgent;
    return ("FD_iPhone" == e.match(/FD_iPhone/i) || "FD_Android" == e.match(/FD_Android/i)) ? !0 : !1
  },
  // 是否vue2Android APP
  isFruitdayAndroidBrowser: function() {
    var e = navigator.userAgent;
    return ("FD_Android" == e.match(/FD_Android/i)) ? !0 : !1
  },
  // 是否vue2iOS APP
  isFruitdayiOSBrowser: function() {
    var e = navigator.userAgent;
    return ("FD_iPhone" == e.match(/FD_iPhone/i)) ? !0 : !1
  },
  /**
   * 货币处理相关
   */
  // 分拆货币 200.65 => 200 | .65,fix 不传显示全部
  sliceCurrency: function(content, fix) {
    if (!content || isNaN(content)) {
      return content;
    } else {
      content = parseFloat(content).toFixed(2) + '';
    }

    var prefix, subfix, idx = content.indexOf('.');
    if (idx > 0) {
      prefix = content.substring(0, idx);
      subfix = content.substring(idx, content.length);
      if (subfix.indexOf('.00') > -1) {
        subfix = ''
      } else if (subfix.substr(subfix.length - 1, subfix.length) == '0') {
        subfix = subfix.substr(0, subfix.length - 1) == '.' ? '' : subfix.substr(0, subfix.length - 1)
      }
    } else {
      prefix = content;
      subfix = '';
    }

    if (fix == 'prefix') {
      return prefix;
    } else if (fix == 'subfix') {
      return subfix;
    } else {
      return prefix + subfix;
    }
  },
  //获取URL参数
  getQueryValue: function(key) {
    var q = location.search, // URL问号 ? 之后的部分
      keyValuePairs = new Array();

    if (q.length > 1) {
      var idx = q.indexOf('?');
      q = q.substring(idx + 1, q.length);
    } else {
      q = null;
    }

    if (q) {
      for (var i = 0; i < q.split("&").length; i++) {
        keyValuePairs[i] = q.split("&")[i];
      }
    }

    for (var j = 0; j < keyValuePairs.length; j++) {
      if (keyValuePairs[j].split("=")[0] == key) {
        // 这里需要解码，url传递中文时location.href获取的是编码后的值
        // 但FireFox下的url编码有问题
        return decodeURI(keyValuePairs[j].split("=")[1]);

      }
    }
    return '';
  },
  _GET: function() {
    var e = location.search,
      o = {};
    if ("" === e || void 0 === e) return o;
    e = e.substr(1).split("&");
    e.forEach(function(value) {
      var t = value.split("=");
      o[t[0]] = t[1]
    })
    return o.from && delete o.code, o //o.from得到的是什么值(类型)
  },
  removeParamFromUrl: function(e) {
    var o = Tools._GET();
    for (var n in e) delete o[e[n]];
    return location.pathname + Tools.buildUrlParamString(o)
  },
  buildUrlParamString: function(e) {
    var o = "";
    for (var n in e) o += n + "=" + e[n] + "&";
    o = o.slice(0, o.length - 1);
    var t = "" === o || void 0 === o;
    return t ? "" : "?" + o
  }
}

window.Tools = Tools;
